The ArchHaskell group works on providing [Haskell](/index.php/Haskell "Haskell") packages to the wider Arch Linux community. The goal is to provide all of [Hackage](http://hackage.haskell.org) as binary packages for easy installation.

## Contents

*   [1 Resources](#Resources)
*   [2 Membership](#Membership)
*   [3 Available repositories](#Available_repositories)
    *   [3.1 haskell-core](#haskell-core)
    *   [3.2 haskell-happstack](#haskell-happstack)
    *   [3.3 haskell-web](#haskell-web)
*   [4 Improving ArchHaskell](#Improving_ArchHaskell)
    *   [4.1 Community](#Community)
    *   [4.2 Overview](#Overview)
    *   [4.3 haskell-core maintenance](#haskell-core_maintenance)
    *   [4.4 Other repository maintenance](#Other_repository_maintenance)
    *   [4.5 Creating another repository](#Creating_another_repository)
    *   [4.6 List of satellite repositories](#List_of_satellite_repositories)
*   [5 Troubleshooting](#Troubleshooting)
    *   [5.1 Switching to ArchHaskell repository](#Switching_to_ArchHaskell_repository)

## Resources

The main resources for the ArchHaskell community to interact and discuss are:

*   #archlinux-haskell IRC channel @ freenode.org
*   arch-haskell@haskell.org [mailing list](http://haskell.org/mailman/listinfo/arch-haskell) and [archives](http://www.haskell.org/pipermail/arch-haskell)
*   [ArchHaskell group](https://github.com/archhaskell) on GitHub

## Membership

Membership is not required at all in order to contribute. Just fork the relevant repository, make some changes, and file a pull request.

There are currently two people with commit rights to the ArchHaskell repository at GitHub:

*   Leif Warner
*   ~~Magnus Therning~~ (in the process of leaving the group)

## Available repositories

### haskell-core

**Note:** The *haskell-core* repository is currently not actively maintained. If you wish to help, please send a mail to the list or use the IRC channel.

The *haskell-core* repository is the base repository of packages maintained by the ArchHaskell team. *haskell-core* can be accessed by adding the following entry to `/etc/pacman.conf` (above [community], to ensure the correct **ghc** package is picked):

**Warning:** Placing *haskell-core* above *community* will cause packages from *haskell-core* to take precedence, and avoid dependency conflicts in case of duplicate packages. Overriding [official repositories](/index.php/Official_repositories "Official repositories") is however **not** supported.

```
[haskell-core]
Server = http://xsounds.org/~haskell/core/$arch

```

The set of packages in the *haskell-core* repository is derived from the **habs** tree officially located [here](https://github.com/archhaskell/habs). A tool called [cblrepo](https://github.com/magthe/cblrepo) is used to keep the **habs** tree synchronized with the official Haskell packages from [Hackage](http://hackage.haskell.org/packages/hackage.html).

The repositories provide both file listings (by using `repo-add --files`), package deltas (`repo-add --delta`), and both packages and the database are signed. The fingerprint of the key used for signing is:

```
pub   2048D/4209170B 2012-12-26
      Key fingerprint = F310 4992 EBF2 4EB8 72B9  7B9C 32B0 B453 4209 170B
uid                  ArchHaskell (Magnus Therning) <magnus@therning.org>
sub   2048D/A418C0FE 2012-12-26

```

If you use `SigLevel = Required TrustedOnly` in `/etc/pacman.conf` for *haskell-core*, then you need to do the following to add Magnus Therning's key:

```
# pacman-key -r 4209170B
# pacman-key --lsign-key 4209170B

```

Force a refresh of all package lists:

```
# pacman -Syu

```

### haskell-happstack

The *haskell-happstack* repository contains packages for web development based on the [Happstack](http://happstack.com/) framework. It requires [#haskell-core](#haskell-core), and includes most of the Happstack packages in [HackageDB](http://hackage.haskell.org/), plus [Gitit](http://gitit.net/) (package name `haskell-gitit`) and [clckwrks](http://clckwrks.com/), all their dependencies not in *haskell-core* and some other not web related packages. To enable the repository, add the following entry to `/etc/pacman.conf`:

```
[haskell-happstack]
Server = http://noaxiom.org/$repo/$arch

```

Add and sign the maintainer's key:

```
# pacman-key -r B0544167
# pacman-key --lsign-key B0544167

```

Bug reports and feature requests in [GitHub](https://github.com/tensor5/haskell-happstack/issues).

### haskell-web

**Note:** The *haskell-web* repository is not maintained anymore. If you wish to help, please send a mail to the list or use the IRC channel.

The repository was built on *haskell-core*, providing several more packages, especially those useful for web applications.

```
[haskell-web]
Server = http://archhaskell.mynerdside.com/$repo/$arch

```

## Improving ArchHaskell

### Community

See the [#Resources](#Resources) and get in touch via the mailing list or the IRC channel.

### Overview

The plan is to have one user-facing repository, *haskell*, which merges the packages available in various satellite repositories (like *haskell-web*), thereby distributing the maintenance load. One satellite repository is special, the *haskell-core* repository, which provides packages that are dependencies of all the other satellites.

### haskell-core maintenance

Ensure:

*   *haskell-core* is an Arch repository hosted at kiwilight and xsounds.
*   *haskell-core* is in sync with the [habs](https://github.com/archhaskell/habs) cblrepo database.

### Other repository maintenance

For example, for haskell-foo, ensure:

*   haskell-foo is a cblrepo database, possibly using packages from *haskell-core* as DistroPkgs.
*   Whenever *haskell-core* is updated, haskell-foo's database is updated to match within a reasonable time.

### Creating another repository

### List of satellite repositories

## Troubleshooting

### Switching to ArchHaskell repository

There can be some problems switching to [ArchHaskell repository](#Available_repositories) when some Haskell packages are already installed from [official repositories](/index.php/Official_repositories "Official repositories"). The surest way is to remove all Haskell related packages, synchronize the [pacman](/index.php/Pacman "Pacman") packages database, and reinstall all the needed packages. Also for Xmonad users, be sure to install `haskell-xmonad` package instead of [xmonad](https://www.archlinux.org/packages/?name=xmonad).